Typically, cache memory includes memory between a shared system memory and execution units of a processor to hold information in a closer proximity to the execution units of the processor. In addition, cache is typically smaller in size than a shared main system memory, which allows for more expensive faster memory, such as Static Random Access Memory (SRAM). Both the proximity to the execution units and the speed allow for caches to provide faster access to data and instructions. Caches are often identified based on their proximity from execution units of a processor. For example, a first-level (L1) cache may be close to execution units residing on the same physical processor. Due to the proximity and placement, first level cache is often the smallest and quickest cache. A computer system may also hold higher-level or further out caches, such as a second level cache, which may also reside on the processor but be placed between the first level cache and main memory, and a third level cache, which may be placed on the processor or elsewhere in the computer system, such as at a controller hub, between the second level cache and main memory.
As the graphics and media applications become more prevalent, the strain on processors to access data/instructions quickly to ensure a user experience is not interrupted becomes increasingly important. However, streaming data, i.e. data that is accessed a limited number of times, associated with graphic intensive media applications is provided to a processor in a similar manner, i.e. through a cache hierarchy. Yet, frequent replacement of non-streaming data in a cache with streaming data potentially results in adverse performance impacts on non-streaming applications, because some of the non-streaming data will be used in the future, while the cache instead holds streaming data that is not going to be used in the near future (if ever) and is therefore much less valuable to hold in the cache